/* 
 * File:   Rotor.h
 * Author: Elevator
 *
 * Created on July 14, 2013, 7:29 PM
 */

#ifndef DATA_ROTOR_H
#define DATA_ROTOR_H

#include <string>
#include "Common/Common.h"

#include "RotorDef.h"
#include "Rule.h"

namespace data {

	class Rotor {
	public:
		Rotor(
			std::string id,
			std::string detailAId,
			std::string detailBId,
			const Vec2 position,
			const RotorDef* definition,
			const ICollection<Rule>* rules );

		const std::string GetId( ) const {
			return _id;
		}

		const std::string GetDetailAId( ) const {
			return _detailAId;
		}

		const std::string GetDetailBId( ) const {
			return _detailBId;
		}

		const Vec2 GetPosition( ) const {
			return _position;
		}

		const RotorDef* GetDefinition( ) const {
			return _definition;
		}

		const ICollection<Rule>* GetRules( ) const {
			return _rules;
		}
	private:
		std::string _id;
		std::string _detailAId;
		std::string _detailBId;
		const Vec2 _position;
		const RotorDef* _definition;
		const ICollection<Rule>* _rules;
	};
}
#endif	/* ROTOR_H */

